/**
 * 
 */
package cz.cvut.fit.crhonjar.mi.run.hawera.tree.expression;

import cz.cvut.fit.crhonjar.mi.run.hawera.exception.HaweraException;
import cz.cvut.fit.crhonjar.mi.run.hawera.tree.Tree;

/**
 * @author Jarec
 * 
 */
public abstract class ExpressionTree extends Tree {

	/**
	 * contructor of ExpressionTree
	 */
	public ExpressionTree() {
		super();
	}

	/**
	 * is expression evaluable at compile time?
	 * 
	 * @return
	 * @throws HaweraException
	 */
	public abstract boolean evaluableAtCompileTime() throws HaweraException;

	/**
	 * returns the type of an expression
	 * 
	 * @return
	 * @throws HaweraException
	 */
	public abstract ExpressionType getType() throws HaweraException;
}
